package speed2010.middleware;

import speed2010.mensagem.Mensagem;
import speed2010.middleware.serviceOverlay.node.Node;

public class ThreadProcessaMensagem extends Thread {
	private Mensagem msg = null;
	private Node node = null;

	public ThreadProcessaMensagem(Mensagem msg, Node node) {
		this.msg = msg;
		this.node = node;
		this.setName("Thread Processa Mensagem Node: " + node.getAddress());
	}

	@Override
	synchronized public void run() {
		try {
			switch (msg.getTipoDaFila()) {
			case ENTRADA:
				InvokerPS invokerPS = new InvokerPS(this.node);
				invokerPS.processaMsgDeEntrada(msg);
				break;
			case SAIDA:
				InvokerP invokerP = new InvokerP(this.node);
				invokerP.processaMsgDeSaida(msg);
				break;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
